#include <stdio.h>
#include <string.h>
#include "gestion_personnel.h"
void menu_personnel(char chemin[]);

void menu_personnel(char chemin[])
{
    int i;
    printf("\n\n");
    printf("********************\n");
    printf("**       MENU     **\n");
    printf("********************\n");
    printf("1: Lire_personnel \n");
    printf("2: Ajouter_personnel \n");
    printf("3: Rechercher_personnel \n");
    printf("4: Supprimer_personnel \n");
    printf("5: Modifier_personnel \n");
    printf("6: Quitter menu \n\n");
    printf ("Donnez votre choix svp !\n");
    scanf("%d",&i);

    switch (i)
    {
    case 1:
        lire_personnel(chemin) ;
        break;
    case 2:
        ajouter_personnel(chemin);
        break;
    case 3:
        rechercher_personnel(chemin);
        break;
    case 4:
        supprimer_personnel(chemin);
        break;
    case 5:
        modifier_personnel(chemin);
        break;
    case 6:
    {
        printf("              Au revoir !!\n     on vous souhaite une bonne journée \n");
        break;
    }
    default:
    {
        printf("/!\\ Option inexistante /!\\\n");
        break;
    }

    }
}
//lecture du fiche personnel
void lire_personnel(char chemin[])
{
    Personnel P;
    FILE *f;
    f=fopen(chemin,"r");
    int n;
    n=NombrePersonnels(chemin);
    if(n==0)
    {
        printf("Fiche Vide !!\n");
    }
    if(f==NULL)
    {
        printf("Impossible d\'ouvrir le fichier\n");

    }
    else
    {
        while(fscanf(f,"%s %s %d %ld %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.identifiant),&(P.etat)) != EOF)
        {
            printf("------------------------------------------------------------\n");
            printf("Nom: %s Prenom: %s Age: %d CIN: %ld Identifiant:%ld Etat:%d \n",P.nom,P.prenom,P.age,P.cin,P.identifiant,P.etat);
            printf("------------------------------------------------------------\n");
        }
    }
    menu_personnel(chemin);
    fclose(f);
}


//ajout d'un personnel
void ajouter_personnel(char chemin[])
{
    int i=0,n;
    Personnel P;
    FILE *f;
    f=fopen(chemin,"a");

    if(f==NULL)
    {
        printf("\n Impossible d\'ouvrir le fichier ");
    }
    else
    {
        if(fscanf(f,"%s %s %d %ld %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.identifiant),&(P.etat))== EOF)
        {
            printf(" Donnez le nbre du personnel a ajouter:\n");
            scanf("%d",&n);
            for(i=0; i<n; i++)
            {
                printf(" Donnez le Nom du personnel à ajouter N° %d:\n",i);
                scanf("%s",P.nom);
                printf(" Donnez le Prenom du personnel à ajouter N° %d:\n",i);
                scanf("%s",P.prenom);
                printf(" Donnez l'Age du personnel à ajouter N° %d:\n",i);
                scanf("%d",&(P.age));
                printf(" Donnez le CIN du personnel à ajouter N° %d:\n",i);
                scanf("%ld",&(P.cin));
                printf(" Donnez l'identifiant du personnel à ajouter N° %d:\n",i);
                scanf("%ld",&(P.identifiant));
                printf(" Donnez l'Etat du personnel à ajouter N° %d:\n",i);
                scanf("%d",&(P.etat));

                fprintf(f,"%s %s %d %ld %ld %d\n",P.nom,P.prenom,P.age,P.cin,P.identifiant,P.etat);
            }
        }
    }
    fclose(f);
    printf("L'AJOUT EST FAITE AVEC SUCCÉE :)\n");
    menu_personnel(chemin);

}
//rechercher personnel
int rechercher_personnel(char chemin[])
{
    Personnel P;
    FILE *f;
    long int id;
    int choix;
    char nom[20],prenom[20];
    int n;
    n=NombrePersonnels(chemin);
    if(n==0)
    {
        printf("Fiche Vide !!\n");
    }
    else
    {
        printf("******************************************\n");
        printf("**  Rechercher le personnel à modifier  **\n");
        printf("******************************************\n");
        printf("   1. Recherche par nom et prenom\n   2. Recherche par identifiant\n");
        printf("   3. Annuler\nFaites votre choix : ");
        scanf("%d",&choix);
        f=fopen(chemin,"r");
        if (f==NULL)
        {
            printf("\nImpossible d\'ouvrir le fichier\n");

        }
        else
        {
            switch(choix)
            {
            case 1:
                printf("Entrez nom et le prenom: ");
                scanf("%s %s",nom,prenom);
                while(fscanf(f,"%s %s %d %ld %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.identifiant),&(P.etat))!=EOF )
                {
                    if((strcmp(P.nom,nom)==0)&&(strcmp(P.prenom,prenom)==0))
                    {
                        printf ("\n%s %s %d %ld %ld %d ",P.nom,P.prenom,P.age,P.cin,P.identifiant,P.etat);
                    }
                }
                break;
            case 2:
                printf("\nEntrez l'identifiant du personnel:\n");
                scanf("%ld",&id);
                while(fscanf(f,"%s %s %d %ld %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.identifiant),&(P.etat))!=EOF )
                {
                    if((P.identifiant)==id)
                    {
                        printf ("\n%s %s %d %ld %ld %d ",P.nom,P.prenom,P.age,P.cin,P.identifiant,P.etat);

                    }
                    else
                    {
                        printf("Ce personnel n'existe pas!\n");
                    }
                }
                break;
            case 3:
                printf("  RECHERCHE ANNULER !!\n");
                break;
            default:
                break;
            }
        }
        fclose(f);
        menu_personnel(chemin);

    }
    return 0;
}

//suppression d'un personnel
void supprimer_personnel(char chemin[])
{
    int t;
    Personnel P;
    long int id;
    FILE *f1,*f2;
    char temp[]="temp.txt";
    f3=fopen(chemin,"r");
    f24=fopen(temp,"w");
    int n;
    n=NombrePersonnels(chemin);
    if(n==0)
    {
        printf("Fiche Vide !!\n");
    }
    else
    {
        if(f3==NULL||f24==NULL)
            printf("\n Impossible d\'ouvrir le fichier \n");
        else
        {
            t=0;
            do
            {
                printf("\nENTREZ L'identifiant du personnel A SUPPRIMER :\n");
                scanf("%ld",&id);
                while(fscanf(f3,"%s %s %d %ld %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.identifiant),&(P.etat))!=EOF )
                {
                    if((P.identifiant)==id)
                    {
                        t=1;
                        break;
                    }
                }
            }
            while(t==0);
            /*printf("%d",t);*/
            while (fscanf(f3,"%s %s %d %ld %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.identifiant),&(P.etat))!=EOF ) 
            {
                if ((P.identifiant)!=id)
                    fprintf (f4,"%s %s %d %ld %ld %d",P.nom,P.prenom,P.age,P.identifiant,P.cin,P.etat);
            }
            fclose(f3);
            fclose(f4);
            remove(chemin);
            rename(temp,chemin);
            printf("\nLA SUPPRESSION EST FAITE AVEC SUCCEE !!\n");
        }
        menu_personnel(chemin);
    }
}
//modification
void modifier_personnel (char chemin[])
{
    long int id;
    FILE *f1/*,*f2*/;
    int choix;
    /* char temp1[]="/home/rabeb/temp1";*/
    Personnel P;
    f1=fopen(chemin,"r");
    /* f2=fopen(temp1,"w");*/
    int n;
    n=NombrePersonnels(chemin);
    if(n==0)
    {
        printf("Fiche Vide !!\n");
    }
    else
    {
        if(f1==NULL/*||f2==NULL*/)
        {
            printf("\n Impossible d\'ouvrir le fichier\n ");
        }
        printf("\nEntrez l'identifiant du personnel à modifier: \n");
        scanf("%ld",&id);
        printf("***********************\n");
        printf("** Menu modification **\n");
        printf("***********************\n");
        printf("1:modifier age\n");
        printf("2:modifier etat\n");
        printf("donner votre choix ");
        scanf("%d",&choix);

        while (fscanf(f1,"%s %s %d %ld %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.identifiant),&(P.etat))!=EOF)
        {
            if ((P.identifiant)==id)
            {
                switch(choix)
                {
                case 1:
                {
                    printf("donner le nouveau age: ");
                    scanf("%d",&(P.age));
                    fprintf(f1,"%s %s %d %ld %d",P.nom,P.prenom,P.age,P.cin,P.etat);

                    break;
                }
                case 2:
                {
                    printf ("donner le nouveau etat: ");
                    scanf("%d",&(P.etat));
                    fprintf(f1,"%s %s %d %ld %d",P.nom,P.prenom,P.age,P.cin,P.etat);
                    break;
                }
                default:
                    break;
                    while (fscanf(f1,"%s %s %d %ld %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.identifiant),&(P.etat))!=EOF)
                    {
                        if ((P.identifiant)!=id)
                            fprintf(f1,"%s %s %d %ld %ld %d",P.nom,P.prenom,P.age,P.cin,P.identifiant,P.etat);
                    }
                    fclose(f1);
                    /* fclose(f2);
                     remove(chemin);
                     rename(temp1,chemin);*/
                }
            }
        }
    }
    printf("MODIFICATION FAITE AVEC SUCCÉE !!\n");
    menu_personnel(chemin);
}
//nbre personnel
int NombrePersonnels(char chemin[])
{
    FILE *f;
    Personnel P;
    int nb = 0;
    f=fopen(chemin,"r");
    if (f==NULL)
    {
        printf("\nImpossible d\'ouvrir le fichier\n");
    }
    else
    {
        while(fscanf(f,"%s %s %d %ld %ld %d",P.nom,P.prenom,&(P.age),&(P.cin),&(P.identifiant),&(P.etat))!=EOF)
        {
            nb++;
        }
        fclose(f);
    }
    return nb;
}


